iT邦幫忙

17

在mysql中亂數抓取特定筆數的資料

brianc 2008-06-09 16:05:4910784 瀏覽
  • 分享至 

  • xImage
  •  

抽獎程式通常需要用亂數抽取不重覆的特定筆數資料,這時候可以考慮使用sql command來處理,語法如下:
select column from table order by rand() limit n

也可以依情況再下所需where絛件!使用上述的語法就不需要把全部的資料傳回程式處理,可以簡化程式碼!

這個指令只在MySQL測過,其他DB可能不支援,有需要的話自行查閱相關DB的manual!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
w111927
iT邦好手 1 級 ‧ 2008-06-09 16:38:56

謝謝分享-很好的sql command運用

0
cyrilwang
iT邦新手 3 級 ‧ 2008-06-09 19:56:55

謝謝分享。
在MySQL的網站提到Rand()並不是一個夠"亂"的亂數產生器,另外也有使用者提到當資料量很大的時候,這個指令的效能會受到很大的影響,所以必須改用其他的方式。

0
fillano
iT邦超人 1 級 ‧ 2008-06-10 10:04:39

恩恩,所以使用還是要看情況來綜合判斷。在where條件中使用函數會碰到的問題,就是會影響mysql的查詢模式,使得查詢速度比較慢(常常會變成用table scan)。如果資料量不大的話就還好。

0
davistai
iT邦大師 1 級 ‧ 2008-06-10 12:19:15

謝謝囉^^

0
jerry640
iT邦新手 1 級 ‧ 2008-06-11 10:34:03

謝謝分享。

0
jjw
iT邦研究生 1 級 ‧ 2008-06-11 23:10:14

謝謝分享

我要留言

立即登入留言